public static void ensureMemberAccess(Class var0, Class var1, Object var2, int var3) throws IllegalAccessException {
if (var0 != null && var1 != null) {
if (!verifyMemberAccess(var0, var1, var2, var3)) {
throw new IllegalAccessException("Class " + var0.getName() + " can not access a member of class " + var1.getName() + " with modifiers \"" + Modifier.toString(var3) + "\"");
}
} else {
throw new InternalError();
}
}
public static boolean verifyMemberAccess(Class var0, Class var1, Object var2, int var3) {
boolean var4 = false;
boolean var5 = false;
if (var0 == var1) {
return true;
} else {
if (!Modifier.isPublic(getClassAccessFlags(var1))) {
var5 = isSameClassPackage(var0, var1);
var4 = true;
if (!var5) {
return false;
}
}
if (Modifier.isPublic(var3)) {
return true;
} else {
boolean var6 = false;
if (Modifier.isProtected(var3) && isSubclassOf(var0, var1)) {
var6 = true;
}
if (!var6 && !Modifier.isPrivate(var3)) {
if (!var4) {
var5 = isSameClassPackage(var0, var1);
var4 = true;
}
if (var5) {
var6 = true;
}
}
if (!var6) {
return false;
} else {
if (Modifier.isProtected(var3)) {
Class var7 = var2 == null ? var1 : var2.getClass();
if (var7 != var0) {
if (!var4) {
var5 = isSameClassPackage(var0, var1);
var4 = true;
}
if (!var5 && !isSubclassOf(var7, var0)) {
return false;
}
}
}
return true;
}
}
}
}
private static boolean isSameClassPackage(Class var0, Class var1) {